/*
 *  Librarie de tipuri de date abstracte (TDA)
 
    Copyright (C) 2007  Catedra de Structuri de Date

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */

/**
@file linkedqueue.h
@author Mihai Balan
@brief This header file contains the structures and functions needed to work
with queues (implemented using linked lists)

It contains functions for creating a queue, destroying it and all the typical
operations on a stack (push, pop, top).
*/

#ifndef LINKEDQUEUE_H_
#define LINKEDQUEUE_H_

struct linkedqueue_adt;

typedef struct linkedqueue_adt *LinkedQueue;

LinkedQueue LQ_New();

void LQ_Free(LinkedQueue queue);

int LQ_Size(LinkedQueue queue);

int LQ_Empty(LinkedQueue queue);

void LQ_Enqueue(LinkedQueue queue, void *el);

void LQ_Dequeue(LinkedQueue queue);

void *LQ_Front(LinkedQueue queue);

#endif /*LINKEDQUEUE_H_*/
